package com.sys.service;

import com.sys.dto.AbilityCurveData;
import com.sys.dto.DailyProgress;
import com.sys.dto.DomainCompletionStats;
import com.sys.dto.MultiDomainCurveData;
import com.sys.entity.BizTaskLog;

import java.util.List;

public interface ProgressService {
    /**
     * 获取用户当日的进度
     * 
     * @param userId 用户ID
     * @return 当日进度信息
     */
    DailyProgress getDailyProgress(Long userId);

    /**
     * 获取用户在特定领域的能力曲线数据
     * 
     * @param userId    用户ID
     * @param domain    领域
     * @param timeRange 时间范围 (e.g., "1w" for one week, "1m" for one month)
     * @return 能力曲线数据
     */
    AbilityCurveData getAbilityCurve(Long userId, String domain, String timeRange);

    /**
     * 获取用户所有领域的能力曲线数据
     * 
     * @param userId    用户ID
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return 多领域能力曲线数据
     */
    MultiDomainCurveData getMultiDomainCurve(Long userId, String startDate, String endDate);

    /**
     * 获取用户各领域完成率统计
     * 
     * @param userId    用户ID
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return 各领域完成率统计列表
     */
    List<DomainCompletionStats> getDomainCompletionStats(Long userId, String startDate, String endDate);

    /**
     * 获取用户的历史任务记录（包含任务详情）
     * 
     * @param userId    用户ID
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return 历史任务记录列表（包含任务标题、描述等详情）
     */
    List<java.util.Map<String, Object>> getHistory(Long userId, String startDate, String endDate);
}